<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>完美数</title>
  <script>
    //5. 如果整数A 的全部约数（包括1，不包括A 本身）之和等于B，且整数B 的全部约数(包括1，不包括B 本身）之和等于A，则称整数A和B是一对亲密数。
    // 求2000 以内的全部亲密数。
    (function work5() {
      //循环1-2000
      for (let i = 1; i < 2001; i++) {
        //创建中间变量当醉预备亲密数
        var d = szqh(qbys(i));
        //判断条件
        if (szqh(qbys(d)) === i && d !== i) {
          //满足输出
          console.log(i + '和' + d + '是一对亲密数');
        }
      }
    })(); //立即执行函数

    //功能：求取参数x的全部约数，并组成数组
    //参数：正整数
    function qbys(x) {
      //创建数组接纳约数，默认又一个1，因为1是任何正整数的约数
      var ys = [1];
      // /循环
      for (let i = 2; i <= x / 2; i++) {
        //判断是否为约数
        if (x % i === 0) {
          //是约数添加进数组
          ys.push(i);
        }
      }
      //返回数组
      return ys;
    }

    //功能：数组求和
    // 参数：整数数组
    function szqh(x) {
      //累加器
      var he = 0;
      //遍历数组
      for (let i = 0; i < x.length; i++) {
        // 累加
        he += x[i];
      }
      // 输出累加器
      return he;
    }
  </script>
</head>

<body>

</body>

</html>